<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="cache-control" content="no-cache">
<title>reflex::Pattern::State Struct Reference</title>
<link href="doxygen_tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="doxygen_content.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top">
 <div id="titlearea">
  <table height="72px" width="100%" cellspacing="0" cellpadding="0">
   <tbody>
    <tr>
     <td width="10%">&nbsp;</td>
     <td><a href="https://github.com/Genivia/RE-flex"><img src="reflex-logo.png"/></a></td>
     <td>
      <div style="float: right; font-size: 18px; font-weight: bold;">reflex::Pattern::State Struct Reference</div>
      <br>
      <div style="float: right; font-size: 10px;">updated Sat May 2 2020 by Robert van Engelen</div>
     </td>
     <td width="10%">&nbsp;</td>
    </tr>
   </tbody>
  </table>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacereflex.html">reflex</a></li><li class="navelem"><a class="el" href="classreflex_1_1_pattern.html">Pattern</a></li><li class="navelem"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structreflex_1_1_pattern_1_1_state-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">reflex::Pattern::State Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Finite state machine.  
 <a href="structreflex_1_1_pattern_1_1_state.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for reflex::Pattern::State:</div>
<div class="dyncontent">
<div class="center"><img src="structreflex_1_1_pattern_1_1_state__inherit__graph.png" border="0" usemap="#reflex_1_1_pattern_1_1_state_inherit__map" alt="Inheritance graph"/></div>
<map name="reflex_1_1_pattern_1_1_state_inherit__map" id="reflex_1_1_pattern_1_1_state_inherit__map">
<area shape="rect" id="node2" title="STL class. " alt="" coords="39,5,115,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for reflex::Pattern::State:</div>
<div class="dyncontent">
<div class="center"><img src="structreflex_1_1_pattern_1_1_state__coll__graph.png" border="0" usemap="#reflex_1_1_pattern_1_1_state_coll__map" alt="Collaboration graph"/></div>
<map name="reflex_1_1_pattern_1_1_state_coll__map" id="reflex_1_1_pattern_1_1_state_coll__map">
<area shape="rect" id="node2" title="STL class. " alt="" coords="5,102,81,129"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aaf45bd19e564cb80862581d6c1a69427"><td class="memItemLeft" align="right" valign="top">typedef std::map&lt; <a class="el" href="classreflex_1_1_pattern.html#a98c79e11448d94900f6db02a09fecd69">Char</a>, std::pair&lt; <a class="el" href="classreflex_1_1_pattern.html#a98c79e11448d94900f6db02a09fecd69">Char</a>, <a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a> * &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#aaf45bd19e564cb80862581d6c1a69427">Edges</a></td></tr>
<tr class="separator:aaf45bd19e564cb80862581d6c1a69427"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa318f44cb0b025d9d5ceb955dc802f78"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#aa318f44cb0b025d9d5ceb955dc802f78">State</a> (const <a class="el" href="classreflex_1_1_pattern.html#a7afa8a46d3665051c17de9b327f3f4dc">Positions</a> &amp;p)</td></tr>
<tr class="separator:aa318f44cb0b025d9d5ceb955dc802f78"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:afb0c5568a8b03c5d39146e6951b1a364"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#afb0c5568a8b03c5d39146e6951b1a364">next</a></td></tr>
<tr class="memdesc:afb0c5568a8b03c5d39146e6951b1a364"><td class="mdescLeft">&#160;</td><td class="mdescRight">points to sibling state allocated depth-first by subset construction  <a href="#afb0c5568a8b03c5d39146e6951b1a364">More...</a><br /></td></tr>
<tr class="separator:afb0c5568a8b03c5d39146e6951b1a364"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d1b02c6a4ca011eca455b01b6c6c881"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#a0d1b02c6a4ca011eca455b01b6c6c881">left</a></td></tr>
<tr class="memdesc:a0d1b02c6a4ca011eca455b01b6c6c881"><td class="mdescLeft">&#160;</td><td class="mdescRight">left pointer for O(log N) node insertion in the state graph  <a href="#a0d1b02c6a4ca011eca455b01b6c6c881">More...</a><br /></td></tr>
<tr class="separator:a0d1b02c6a4ca011eca455b01b6c6c881"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c27bd3c44a2b5970b8a871920981472"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#a5c27bd3c44a2b5970b8a871920981472">right</a></td></tr>
<tr class="memdesc:a5c27bd3c44a2b5970b8a871920981472"><td class="mdescLeft">&#160;</td><td class="mdescRight">right pointer for O(log N) node insertion in the state graph  <a href="#a5c27bd3c44a2b5970b8a871920981472">More...</a><br /></td></tr>
<tr class="separator:a5c27bd3c44a2b5970b8a871920981472"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acca70f634553874d04317a02a8e1fe59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#aaf45bd19e564cb80862581d6c1a69427">Edges</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#acca70f634553874d04317a02a8e1fe59">edges</a></td></tr>
<tr class="memdesc:acca70f634553874d04317a02a8e1fe59"><td class="mdescLeft">&#160;</td><td class="mdescRight">state transitions  <a href="#acca70f634553874d04317a02a8e1fe59">More...</a><br /></td></tr>
<tr class="separator:acca70f634553874d04317a02a8e1fe59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a042a505a9ef02630fe9265e506770c80"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classreflex_1_1_pattern.html#a38d69acf1e472d48225a3ba50b138e02">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#a042a505a9ef02630fe9265e506770c80">index</a></td></tr>
<tr class="memdesc:a042a505a9ef02630fe9265e506770c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">index of this state  <a href="#a042a505a9ef02630fe9265e506770c80">More...</a><br /></td></tr>
<tr class="separator:a042a505a9ef02630fe9265e506770c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a959692de3a09a1617f60a9172c170913"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classreflex_1_1_pattern.html#a6f0e307c649ca5683b7d959b7e25f367">Accept</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#a959692de3a09a1617f60a9172c170913">accept</a></td></tr>
<tr class="memdesc:a959692de3a09a1617f60a9172c170913"><td class="mdescLeft">&#160;</td><td class="mdescRight">nonzero if final state, the index of an accepted/captured subpattern  <a href="#a959692de3a09a1617f60a9172c170913">More...</a><br /></td></tr>
<tr class="separator:a959692de3a09a1617f60a9172c170913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa360e4a81873871cd9cfe33fc081bda6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classreflex_1_1_pattern.html#a635e175260a3f7fa5cc9fe1ea9d5ca26">Lookaheads</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#aa360e4a81873871cd9cfe33fc081bda6">heads</a></td></tr>
<tr class="memdesc:aa360e4a81873871cd9cfe33fc081bda6"><td class="mdescLeft">&#160;</td><td class="mdescRight">lookahead head set  <a href="#aa360e4a81873871cd9cfe33fc081bda6">More...</a><br /></td></tr>
<tr class="separator:aa360e4a81873871cd9cfe33fc081bda6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2acf8b7d8ac97f26c8ce6f2cc12cfa5a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classreflex_1_1_pattern.html#a635e175260a3f7fa5cc9fe1ea9d5ca26">Lookaheads</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#a2acf8b7d8ac97f26c8ce6f2cc12cfa5a">tails</a></td></tr>
<tr class="memdesc:a2acf8b7d8ac97f26c8ce6f2cc12cfa5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">lookahead tail set  <a href="#a2acf8b7d8ac97f26c8ce6f2cc12cfa5a">More...</a><br /></td></tr>
<tr class="separator:a2acf8b7d8ac97f26c8ce6f2cc12cfa5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af60b79d2c98972ae5fd302923ed0c370"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#af60b79d2c98972ae5fd302923ed0c370">redo</a></td></tr>
<tr class="memdesc:af60b79d2c98972ae5fd302923ed0c370"><td class="mdescLeft">&#160;</td><td class="mdescRight">true if this is an ignorable final state  <a href="#af60b79d2c98972ae5fd302923ed0c370">More...</a><br /></td></tr>
<tr class="separator:af60b79d2c98972ae5fd302923ed0c370"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Finite state machine. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="aaf45bd19e564cb80862581d6c1a69427"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::map&lt;<a class="el" href="classreflex_1_1_pattern.html#a98c79e11448d94900f6db02a09fecd69">Char</a>,std::pair&lt;<a class="el" href="classreflex_1_1_pattern.html#a98c79e11448d94900f6db02a09fecd69">Char</a>,<a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a>*&gt; &gt; <a class="el" href="structreflex_1_1_pattern_1_1_state.html#aaf45bd19e564cb80862581d6c1a69427">reflex::Pattern::State::Edges</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="aa318f44cb0b025d9d5ceb955dc802f78"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">reflex::Pattern::State::State </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classreflex_1_1_pattern.html#a7afa8a46d3665051c17de9b327f3f4dc">Positions</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a959692de3a09a1617f60a9172c170913"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classreflex_1_1_pattern.html#a6f0e307c649ca5683b7d959b7e25f367">Accept</a> reflex::Pattern::State::accept</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>nonzero if final state, the index of an accepted/captured subpattern </p>

</div>
</div>
<a class="anchor" id="acca70f634553874d04317a02a8e1fe59"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structreflex_1_1_pattern_1_1_state.html#aaf45bd19e564cb80862581d6c1a69427">Edges</a> reflex::Pattern::State::edges</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>state transitions </p>

</div>
</div>
<a class="anchor" id="aa360e4a81873871cd9cfe33fc081bda6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classreflex_1_1_pattern.html#a635e175260a3f7fa5cc9fe1ea9d5ca26">Lookaheads</a> reflex::Pattern::State::heads</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>lookahead head set </p>

</div>
</div>
<a class="anchor" id="a042a505a9ef02630fe9265e506770c80"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classreflex_1_1_pattern.html#a38d69acf1e472d48225a3ba50b138e02">Index</a> reflex::Pattern::State::index</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>index of this state </p>

</div>
</div>
<a class="anchor" id="a0d1b02c6a4ca011eca455b01b6c6c881"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a>* reflex::Pattern::State::left</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>left pointer for O(log N) node insertion in the state graph </p>

</div>
</div>
<a class="anchor" id="afb0c5568a8b03c5d39146e6951b1a364"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a>* reflex::Pattern::State::next</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>points to sibling state allocated depth-first by subset construction </p>

</div>
</div>
<a class="anchor" id="af60b79d2c98972ae5fd302923ed0c370"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool reflex::Pattern::State::redo</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>true if this is an ignorable final state </p>

</div>
</div>
<a class="anchor" id="a5c27bd3c44a2b5970b8a871920981472"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structreflex_1_1_pattern_1_1_state.html">State</a>* reflex::Pattern::State::right</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>right pointer for O(log N) node insertion in the state graph </p>

</div>
</div>
<a class="anchor" id="a2acf8b7d8ac97f26c8ce6f2cc12cfa5a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classreflex_1_1_pattern.html#a635e175260a3f7fa5cc9fe1ea9d5ca26">Lookaheads</a> reflex::Pattern::State::tails</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>lookahead tail set </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="pattern_8h.html">pattern.h</a></li>
</ul>
</div><!-- contents -->
<hr class="footer">
<address class="footer"><small>
Converted on Sat May 2 2020 15:02:24 by <a target="_blank" href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.11</small></address>
<br>
<div style="height: 246px; background: #DBDBDB;">
</body>
</html>
